<?
	class fabrica
	{
		private function abrirArquivo($nome)
		{
			$nomeArquivo = $nome.'.class.php';
	
			$fp = fopen($nomeArquivo, "a");
			
			return $fp;
		}
		
		private function fecharArquivo($arquivo)
		{
			fclose($arquivo);
		}
		
		private function criarClasse($nome,$padrao,$extends)
		{
			$fp = $this->abrirArquivo($nome);
			
			$cabecalho = "<?php\r\n	class ".$nome;
			
			if(!empty($extends))
			{
				$cabecalho .= " extends ".$extends."\r\n	{\r\n";
			} else
			{
				$cabecalho .= "\r\n	{\r\n";
			}
			
			$escreve = fwrite($fp,$cabecalho);
			
			$inserir = "		public function cadastrar".$padrao.'($dados)'."\r\n		{\r\n";
			$inserir .= '			return $this->salvar($dados);'."\r\n		}\r\n\r\n";
			$escreve = fwrite($fp,$inserir);
			
			$atualizar = "		public function atualizar".$padrao.'($dados,$cod'.$padrao.')'."\r\n		{\r\n";
			$atualizar .= '			return $this->atualizar($dados,$cod'.$padrao.');'."\r\n		}\r\n\r\n";
			$escreve = fwrite($fp,$atualizar);
			
			$excluir = "		public function excluir".$padrao.'($cod'.$padrao.')'."\r\n		{\r\n";
			$excluir .= '			$criteria = new TCriteria();'."\r\n";
			$excluir .= '			$criteria'."->add(new TFilter('cod','=',".'$cod'.$padrao.'));'."\r\n\r\n";
			$excluir .= '			return $this->deletar($criteria);'."\r\n		}\r\n\r\n";
			$escreve = fwrite($fp,$excluir);
			
			$listar = "		public function listar".$padrao.'()'."\r\n		{\r\n";
			$listar .= '			$criteria = new TCriteria();'."\r\n\r\n";
			$listar .= '			return $this->selecionarColecao($criteria);'."\r\n		}\r\n";
			$escreve = fwrite($fp,$listar);
			
			$escreve = fwrite($fp,"	}\r\n?>");
			
			$this->fecharArquivo($fp);
		}
		
		public function gerarCarga($dados)
		{
			$total = count($dados);
	
			for($x = 0;$x < $total;$x++)
			{
				$this->criarClasse($dados[$x]['nome'],$dados[$x]['padrao'],$dados[$x]['extends']);
			}
		}
	}
?>